/*eslint no-console: 0 */

class ErrorHandler {
  constructor(api) {
    this.api = api;
  }

  handleCatch(e) {
    // If babel supported extending of Error in a correct way instanceof would be used here
    if (e.name === 'InvalidInputException') {
      if (this.api._options.valid !== this.api._defaults.valid) {
        this.api._options.valid(false);
      } else {
        throw e.message;
      }
    } else {
      throw e;
    }

    this.api.render = function () {};
  }

  wrapBarcodeCall(func) {
    try {
      var result = func(...arguments);
      this.api._options.valid(true);
      return result;
    } catch (e) {
      this.handleCatch(e);

      return this.api;
    }
  }
}

export default ErrorHandler;
